<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    /*
    一.new是什么
    定义: new操作符用于创建一个给定构造函数的实例对象
    简单来说:
            1.new 能创建一个实例对象; 
            2.这个对象是给定的构造函数
    */
    function Person(name, age){
      this.name = name;
      this.age = age;
      console.log(this) // Person { name: 'Tom', age: 20 }
    }
    Person.prototype.sayName = function () {
      console.log(this.name)
    }
    const person1 = new Person('Tom', 20)
    console.log(person1)  // Person {name: "Tom", age: 20}
    person1.sayName() // 'Tom'
    /*
    new 通过构造函数 Person 创建出来的实例可以访问到构造函数中的属性
    new 通过构造函数 Person 创建出来的实例可以访问到构造函数原型链中的属性（即sayName）
    构造函数 Person 的 this 指向是 new 通过构造函数 Person 创建出来的实例
    */
  </script>
</body>
</html>